#ifndef __VCD_CONF_H__
#define __VCD_CONF_H__
#include <glib.h>

G_BEGIN_DECLS

#include "../vcd-util.h"
#include <openssl/evp.h>
#include <openssl/md5.h>
#include <string.h>
#include <stdio.h>

extern struct vcd_conf* g_vcd_conf;

struct vcd_conf
{
    /*主界面配置*/
    gchar ip[100];       //服务端ip(区别于代码内的server_ip这是虚拟机具体所在物理机ip)
    gchar ip_port[40];  //客户端ip:port(192.168.112.3:8006)
    gchar username[512];//用户名
    gchar passwd[1024]; //密文密码
    gchar plaintext_passwd[1024]; //明文密码
    gint enable_user_passwd;//0:no, other:yes
    gint enable_autologin; //0:no, other:yes
    gint enable_rdp; //0::no, other:yes
    
    /*系统设置配置*/
    gchar sys_passwd[1024];//系统设置密码
    gint enable_grade;  //0:no, other:yes
    gint login_way;     //0:私有云PRIVATE 1:公有云PUBLIC
    gint login_mode;    //使用管理平台连接模式还是pve连接模式 0:(pve接口模式EMODE_NEW)  1:(管理平台接口模式EMODE_OLD) 2:(EMODE_LOCAL)
    gchar sound_card_name[220]; //如果pactl list cards有两张卡，改变默认之后需要在此记录，以便下次界面正常显示

    /*自动连接需要记录的配置*/
    gchar node[60];    //上次连接虚拟机所在节点
    gint64 vmid;        //上次连接虚拟机vmid
    gchar public_id[20];//公有云id号

    /*虚拟机连接之后播放视频比特率配置*/
    gint64 bitrate;     //比特率

    guint  fresh_ticket_interval;//seconds
    guint  fresh_vm_list_interval;//seconds

    gboolean usb_redir_apply_all_flag;

    GKeyFile *keyfile;
    gchar *conf_file;

    gboolean local_model_check_status;

    TopbarPostion topbar_position;
    gboolean is_show_topbar;
};

//return 0:success other: error
int read_vcd_conf(void);

//return 0:success other: error
int reload_vcd_conf(void);

//return 0:success other: error
int update_vcd_conf(void);

//return IP:PORT
char *get_ip_port(void);

gboolean vraify_localmode_user_pass(const char* key, const char *pass);

void heartbeat_record_user_pass_config(LocalmodeUserPass* user_pass, int count);

G_END_DECLS

#endif
